package persistencia.daos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;

import persistencia.consultas.Consultas;
import pool.Conexion;
import pool.IPoolConexiones;
import pool.PoolConexiones;
import valueObjects.VODuenio;
import clases.Duenio;

public class DAODuenios {
			
	    private IPoolConexiones iPool;
		private String driver = "com.mysql.jdbc.Driver";
		private String url = "jdbc:mysql://localhost:3306/bd";
		private String user = "root";
		private String password = "admin";
		 
		private Consultas c;
		private PreparedStatement pstmt;
		private ResultSet rs;
		private Conexion icon;
		private VODuenio voDue;
		private Connection con;
		
		public void DAODuenios(Connection cone)
		{
			iPool = (IPoolConexiones) PoolConexiones.getInstancia();
			con = cone;
			c = new Consultas();
		}
		public boolean member(int cedula)
		{			
			String query = c.existeDuenio();
			Conexion conex = (Conexion) iPool.obtenerConexion(false);//ver como pasar el booleano
			Connection con = conex.getConnection();
			try {
				pstmt = con.prepareStatement(query);
				pstmt.setInt(1, cedula);
				ResultSet rs = pstmt.executeQuery();
				if(rs.next())
					return true;
				else
					return false;
				
				
			} catch (SQLException e) {
				e.printStackTrace();
			} finally{
//				iPool.liberarConexion(con, true);
			}
			
			
			return false;
		}
		public void insert(Duenio due)
		{
			String insertar = c.insertarDuenio();
			Conexion conex = (Conexion) iPool.obtenerConexion(false);//ver como pasar el booleano
			Connection con = conex.getConnection();
			try {
				pstmt = con.prepareStatement(insertar);
				pstmt.setInt(1, voDue.getCedula());
				pstmt.setString(2, voDue.getNombre());
				pstmt.setString(3, voDue.getApellido());
				pstmt.executeUpdate();

			} catch (SQLException e) {
				e.printStackTrace();
			} finally{
//				iPool.liberarConexion(con, true);
			}
		}
		public Duenio find(int cedula)
		{
			String query = c.existeDuenio();
			Duenio due = null;
			Conexion conex = (Conexion) iPool.obtenerConexion(false);//ver como pasar el booleano
			Connection con = conex.getConnection();
			try {
				pstmt = con.prepareStatement(query);
				pstmt.setInt(1, cedula);
				ResultSet rs = pstmt.executeQuery();
				if(rs.next())
					due = new Duenio(rs.getInt(1), rs.getString(2), rs.getString(3));				
				
			} catch (SQLException e) {
				e.printStackTrace();
			} finally{
//				iPool.liberarConexion(con, true);
			}		
			return due;
		}
		public void delete(int cedula)
		{
			String borrarDuenio = c.borrarDuenioMascotas();
			try {
				pstmt = con.prepareStatement(borrarDuenio);
				pstmt.executeUpdate();
				
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		public List<VODuenio> listarDuenios()
		{
			List<VODuenio> lista = new LinkedList<VODuenio>();
			String listarDuenios = c.listarDuenios();
			try {
				pstmt = con.prepareStatement(listarDuenios);
				rs = pstmt.executeQuery(listarDuenios);
				while(rs.next()){
					int cedula = rs.getInt("cedula");
					String nombre = rs.getString("nombre");
					String apellido = rs.getString("apellido");
					VODuenio voDue = new VODuenio(cedula, nombre, apellido);
					lista.add(voDue);
				}
				
			} catch (SQLException e) {
				e.printStackTrace();
			}		
			return lista;
		}
}
